package IO流_字符流.文件字符输入流_读字符数据进来;


import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.Reader;

public class Test {
    public static <File> void main(String[] args) throws Exception {
        // FileReader: 文件字符输入流
        // 作用: 以内存为基准, 可以把文件中的数据以字符的形式读入到内存中去

        // 构造器:
        // 1. public FileReader(File file(源文件)): 创建字符输入流管道与源文件接通
        // 2. public FileReader(String pathname(源文件路径)): 创建字符输入流管道与源文件接通

        // 方法:
        // 1. public int read(): 每次读取一个字符返回, 如果发现没有数据可读会返回-1
        // 2. public int read(char[] buffer): 每次用一个字符数组去读取数据, 返回字符数组读取了多少个字符, 如果发现没有数据可读会返回-1


        // 目标: 掌握文件字符输入流每次读取一个字符


        try (
                // 1. 创建一个文件字符输入流管道与源文件接通
                Reader file = new FileReader("Senior\\src\\IO流_字符流\\pat")
        ) {
            // 2. 读文本文件内容

            // a. 一次读取一个字符
//            int c; // 记住每次读取的字符编号
//            while ((c = file.read()) != -1) {
//                System.out.print((char)c);
//            }
            // b. 一次读取多个字符
            char[] buffer = new char[3]; //桶大小为3, 说明每次读取3个字符
            int len; // 记住每次读取了多少个字符
            while ((len = file.read(buffer)) != -1) {
                // 遵循都多少倒多少的原则
                System.out.print(new String(buffer, 0, len));
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
